package org.skatiger.jrove.config;

import java.io.Serializable;

public class ConfigPropertyImpl<T extends Serializable> implements
        ConfigProperty<T> {
    private String key;
    private T value;

    ConfigPropertyImpl(String key) {
        super();
        this.key = key;
    }

    public ConfigPropertyImpl(String key, T defaultValue) {
        this(key);
        this.value = defaultValue;
    }

    public String getKey() {
        return key;
    }

    public T getValue() {
        return value;
    }

    public ConfigProperty<T> value(T t) {
        ConfigPropertyImpl<T> impl = new ConfigPropertyImpl<T>(this.key, t);
        return impl;
    }

    public static <V extends Serializable> ConfigProperty<V> create(String key,
            V value) {
        return new ConfigPropertyImpl<V>(key, value);
    }
    public static <V extends Serializable> ConfigProperty<V> create(String key) {
        return new ConfigPropertyImpl<V>(key);
    }
}
